MODELO ORIENTADO A OBJETOS

    El Modelo Orientado a Objetos se basa en el paradigma de programación orientado a objetos. Este paradigma ha tenido gran aceptación debido a que es de gran naturalidad buscar objetos en la realidad a modelar.

     

    Estructura de Objetos.

     

    El modelo orientado a objetos se basa en encapsular código y datos en una única unidad, llamada objeto. La interfaz entre un objeto y el resto del sistema se define mediante un conjunto de mensajes.

    El motivo de este enfoque puede ilustrarse considerando una base de datos de documentos en la que los documentos se preparan usando uno entre varios paquetes software con formateador de texto. Para imprimir un documento debe ejecutarse el formateador correcto en el documento. Bajo un enfoque orientado a objetos, cada documento es un objeto que contiene el texto de un documento y el código que opera sobre el objeto. Todos los objetos del tipo documento responden al mensaje Imprimir, pero lo hacen de forma diferente. Cada documento responde ejecutando el código formateador adecuado. Encapsulando dentro del objeto documento la información acerca de cómo imprimirlo, se puede tener todos los documentos con la misma interfaz externa al usuario (aplicación).

     

    En general, un objeto tiene asociado:

       

      Un conjunto de atributos que contienen datos acerca del objeto. A su vez, cada valor de un atributo es un
      objeto.

      Un conjunto de mensajes a los que el objeto responde.

      Un conjunto (puede ser unitario) de métodos, que es un procedimiento o trozo de código para implementar la respuesta a cada mensaje. Un método devuelve un valor (otro objeto) como respuesta al mensaje.

    Puesto que la única interfaz externa de un objeto es el conjunto de mensajes al que responde, es posible modificar la definición de métodos y atributos sin afectar a otros objetos.

    También es posible sustituir un atributo por un método que calcule un valor.

     

    Ejemplo:

    Un objeto documento puede contener un atributo de tamaño que contenga el número de bytes de texto en el documento, o bien un método de tamaño que calcule el tamaño del documento leyéndolo y contando el número de bytes.

    "La capacidad de modificar la definición de un objeto, sin afectar al resto del sistema, está considerada como una de las mayores ventajas del Modelo de Programación Orientada a Objetos".

     

    Jerarquía de Clases

    Normalmente en la realidad a modelar existen muchos objetos similares. Por similar se quiere decir que tienen una naturaleza parecida, por lo que son candidatos a poseer atributos, métodos y responder a mensajes comunes en un contexto orientado a objetos (VIC).

    Para el caso de los objetos similares, sería un trabajo inútil definir cada uno de ellos por separado. Por tanto, se agrupan para que conformen una clase. A cada uno de estos objetos se le llama instancia de clase. Todos los objetos de una clase comparten una definición común, aunque difieran en los valores asignados a los atributos.

    Ejemplo:

    En un banco, son objetos los clientes, las cuentas y los préstamos.

    Una clase incluye:

      Un atributo con valores en un conjunto cuyo valor es el conjunto de todos los objetos que son instancias de la clase.

      Implementación de un método para el mensaje nuevo, el cual crea una nueva instancia de la clase.

     

    Un esquema orientado a los objetos, normalmente requiere un gran número de clases. Sin embargo, a menudo se da el caso que varias clases son similares. Para permitir la representación directa de similitudes entre clases, se utiliza una jerarquía de especialización, como aquella utilizada por el modelo MER extendido.

    Ejemplo:

    En un banco, es de esperarse que los Empleados y los Clientes tengan ciertos atributos comunes como RUC, nombre, dirección y teléfono, sin embargo los Empleados podrían tener un atributo exclusivo, como salario, mientras que los Clientes tendrán atributos como tasa de crédito. Aquí los empleados y clientes pueden ser representados por especializaciones de una clase Persona. Los atributos y los métodos específicos para Empleado se asocian a la clase Empleado, en forma análoga, se actúa para los clientes. Los atributos y métodos comunes para empleados y clientes se asocian a la clase Persona.


     

    Observación:

    Denotaremos las clases por medio de rectángulos con línea doble, mientras que las instancias de las mismas u objetos, se representarán por rectángulos. El semicírculo denota la relación ES_UN, o ESPECIALIZACION de, que se utiliza para construir la jerarquía de clases (VIC).

     

    Herencia

    Una propiedad interesante para efectos de modelación, es la herencia. Esta se manifiesta cuando se tiene una clase que es una especialización, de otra que se encuentra en un nivel superior en la jerarquía de clases. La clase subordinada (en un nivel inferior) hereda los métodos, mensajes y atributos de la clase superior.

    Cuando una clase que hereda de otra necesita incluir un atributo extra, éste se le asocia, y no afecta a la clase superior. Por otro lado, es común que en una clase que constituye una especialización, se desee modificar alguno de los métodos heredados para adecuar la respuesta a algún mensaje. En este caso se modifica el comportamiento de esta clase, y el método nuevo se le asocia.Ejemplo:

    Retornando al caso del banco, podemos observar que como atributos para la clase persona se tiene ruc, nombre, dirección y teléfono. A su vez los empleados tienen un sueldo, y los clientes una tasa de crédito.

     

     

     

    En este caso, un objeto de la clase persona tiene como atributos RUC, Nombre, Dirección y Teléfono, un Empleado, hereda todos los anteriores y agrega el atributo Sueldo, mientras que el Cliente agrega el atributo Tasa Crédito.

     

    Observación:

    1. El triángulo del diagrama denota la relación COMPUESTO_DE o INTEGRADO_POR, para indicar que los atributos de una clase pertenecen a las clases que se indican. En algunos formalismos para modelar clases y objetos existe la cardinalidad, para indicar el número de veces que un atributo puede aparecer en una clase.

    2. En este caso no se han incluido los métodos pertenecientes a cada clase ni los mensajes a los que responde cada método. Esto se ha obviado por quedar fuera del ámbito de nuestro interés.

     

    Identidad de Objeto

    En este modelo no necesitamos detectar los atributos que constituirán el identificador de un objeto. Aquí cada objeto conserva su identidad independientemente de su estado.

    El estado de un objeto está dado por los valores que en un momento tengan sus atributos. En el caso de las otras técnicas, habíamos identificado un elemento de la realidad en base al valor de algún conjunto de sus atributos, por ejemplo el nombre de una persona o la patente de un auto. Aquí podemos utilizar el mismo criterio para fines de búsqueda de información, pero a diferencia de los sistemas como los relaciónales, aunque modifiquemos el nombre de un objeto persona, éste seguirá siendo el mismo objeto.